/*
===========================================================================
Copyright (C) 2005 Sarunas

This file is part of MyPIRC source code.

DisksDB source code is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.

DisksDB source code is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with DisksDB; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
===========================================================================
*/
using System;

namespace MyIRC
{
	public delegate void EventHandlerDisconnectedPrivate(IConnection server, IPrivate privateChat);
	public delegate void EventHandlerPrivMsgPrivate(IConnection server, IPrivate priv, IUser user, string message);
	public delegate void EventHandlerNickChangedPrivate(IConnection server, IPrivate privateChat, string oldNick, string newNick);
	public delegate void EventHandlerNickChanged(IConnection server, IUser user, string oldNick, string newNick);
	public delegate void EventHandlerRawMessage(IConnection server, string msg);
	public delegate void EventHandlerDisconnected(IConnection server);
	public delegate void EventHandlerUnparsedLeftText(IConnection server, string text);
	public delegate void EventHandlerPingPong(IConnection server);
	public delegate void EventHandlerNewChannel(IConnection server, IChannel chan);
	public delegate void EventHandlerConnected(IConnection server);
	public delegate void EventHandlerChannelJoined(IConnection server, IChannel channel);
	public delegate void EventHandlerPrivateChatCreated(IConnection server, IPrivate privateChat);
	public delegate void EventHandlerDisconnectedChannel(IConnection server, IChannel channel);
	public delegate void EventHandlerTopicChanged(IConnection server, IChannel channel, string newTopic, string changedBy);
	public delegate void EventHandlerNicksRecieved(IConnection server, IChannel channel);
	public delegate void EventHandlerTopicRecieved(IConnection server, IChannel channel, string topic, string author, DateTime setDate);
	public delegate void EventHandlerUserJoinedChannel(IConnection server, IChannel chan, IUser user);
	public delegate void EventHandlerUserPartedChannel(IConnection server, IChannel chan, IUser user, string message);
	public delegate void EventHandlerModeChanged(IConnection server, IChannel chan, IUser user, string[] mode);
	public delegate void EventHandlerUserKicked(IConnection server, IChannel chan, IUser user, string who, string message);
	public delegate void EventHandlerUserQuitedChannel(IConnection server, IChannel chan, IUser user, string message);
	public delegate void EventHandlerUserNickChanngedChannel(IConnection server, IChannel chan, IUser user, string newNick);
	public delegate void EventHandlerBansListRecieved(IConnection server, IChannel chan, string[] bans);
	public delegate void EventHandlerModesListRecieved(IConnection server, IChannel chan, string[] modeStrings);
	public delegate void EventHandlerNotice(IConnection server, IUser user, string message);

	/// <summary>
	/// Event handler for handling raw messages.
	/// It recieves all messages from server.
	/// </summary>

	/// <summary>
	/// Delegate for disconnect event
	/// </summary>

	/// <summary>
	/// Delegate for any other message event
	/// </summary>

	/// <summary>
	/// Delegate for PING PONG event
	/// </summary>

	/// <summary>
	/// Delegate for new Private chat opened by other user
	/// </summary>

	/// <summary>
	/// Delegate for event then user enters the specified channel
	/// </summary>

	/// <summary>
	/// Delegate for connected event
	/// </summary>

	/// <summary>
	/// Delegate for you nuick changed event
	/// </summary>

	/// <summary>
	/// Delegate for incomming notice event
	/// </summary>

	/// <summary>
	/// delegate then disconnected form server
	/// </summary>

	/// <summary>
	/// delegate then user joins chanel
	/// </summary>

	/// <summary>
	/// delegate then user pats channel
	/// </summary>

	/// <summary>
	/// delegate then user quits channel
	/// </summary>

	/// <summary>
	/// delegate then user is kiced from channel
	/// </summary>

	/// <summary>
	/// delegate then mode chaged
	/// </summary>

	/// <summary>
	/// delegate then topic changed
	/// </summary>

	/// <summary>
	/// delegate then somebodys nick chaged
	/// </summary>

	/// <summary>
	/// delegate then somebody says somthing to channel
	/// </summary>

	/// <summary>
	/// delegate then server sends channel nicks list
	/// </summary>

	/// <summary>
	/// delegate then server sends channel topic
	/// </summary>

	/// <summary>
	/// delegate when bans list recieved for channel
	/// </summary>

	/// <summary>
	/// delegate then channel modes recieved
	/// </summary>

	/// <summary>
	/// delegate then notice to channel recieved
	/// </summary>

	/// <summary>
	/// delegate then you are kicked from channel
	/// </summary>
}
